#pragma once
#include <string>
#include <vector>
#include <assert.h>
#include <tchar.h>
#include "BaseVariables.h"
#include "../interfaces.h"
namespace RE
{
	namespace IO{



class Path
{
public:
	Path() {}
	Path(const char * const dir);
	Path(const TCHAR* const dir);
	Path(const std::wstring& const dir);
	Path(const std::string& const dir);
	~Path() {}
	const std::wstring&	GetPath();
	std::wstring	GetPathCopy();
	std::wstring	GetAbsolutePath();
	bool			IsEmpty();

	static bool		ValidatePath(const std::wstring & str);
	static bool		ValidatePath(const std::string & str);
private:
	std::wstring	m_path;
};

//	/../data/textures/ (Game/Bin/)
class FilePath
{
public:
	FilePath() {}
	~FilePath() {}

	Path&			GetPath();
	
	std::wstring&	GetFile();
	std::wstring	GetFileName();
	std::wstring	GetExtension();
	bool			SetPath(Path & str);
	bool			SetFileName(std::wstring & str);
	bool			SetExtension(std::wstring & str);
	bool			IsEmpty();
private:
	std::wstring	m_file;
	Path			m_path;
};
	
	} // end of namespace IO
} // end of namespace RE